package fun.anin.aninhongbao.util;

import java.util.Random;

/***
 * 抢红包金额伪算法
 * @author anin
 * @date: 2020/3/29 18:15
 * @version : V1.0
 */
public class GrapRedEnvelope {

    /**
     * 计算获得红包金额;最小每人0.01元
     * @param money  剩余红包总额(单位：分)
     * @param personNumber 人数
     * @return
     */
    public static int getMathMoney(int money, int personNumber) {
        //红包最少每人一分
        if(money < personNumber){
            throw new RuntimeException();
        }
        //如果是最后一个人直接分配
        if(personNumber == 1){
            return money;
        }
        //获得1到剩余平均值2倍的随机数
        int r = new Random().nextInt((money/personNumber)*2 ) + 1;
        //判断剩余钱是不是足够剩下人每人一分
        //如果不足则重新随机,直至剩余的人每人最少一分
        if((money - r) < personNumber){
            r = getMathMoney(money,personNumber);
        }
        return r;
    }

    /**
     * 获取普通红包金额
     * @param money         总金额
     * @param personNumber  人数
     * @return
     */
    public static int getMoney(int money, int personNumber){
        return money/personNumber;
    }
}
